package day6;

import javafx.scene.Parent;

import java.util.*;
public class Solution {
    public static void main(String[] args) {
        String str = "+123";
        System.out.println(StrToInt(str));
    }
    /**
     * 把字符串转换成整数
     * 将一个字符串转换成一个整数，要求不能使用字符串转换整数的库函数。数值为О或者字符串不是一个合法的数值则返回0
     */
    /**
     * 字符串中可能出现任意符号，出现除+/-以外符号时直接输出0②字符串中可能出现+/-且仅可能出现在字符串首位。
     * @param str
     * @return
     */

    public static int StrToInt(String str) {
//        if (str.trim().equals("") || str == null){
//            return 0;
//        }
//        if ((str.charAt(0) == '+' || str.charAt(0) == '-') && str.length() == 1){
//            return 0;
//        }
//        int num = 0;
//        StringBuilder stringBuilder = new StringBuilder();
//        if (str.charAt(0) == '+' || str.charAt(0) == '-'){
//            //stringBuilder.append(str.charAt(0));
//            for (int i = 1; i < str.length(); i++) {
//                if (str.charAt(i) >= '0' && str.charAt(i) <= '9'){
//                    stringBuilder.append(str.charAt(i));
//                }else {
//                    return 0;
//                }
//            }
//            num = Integer.parseInt(String.valueOf(stringBuilder));
//            if (str.charAt(0) == '-'){
//                num = -num;
//            }
//        }else {
//            for (int i = 0; i < str.length(); i++) {
//                if (str.charAt(i) >= '0' && str.charAt(i) <= '9'){
//                    stringBuilder.append(str.charAt(i));
//                }else {
//                    return 0;
//                }
//            }
//            num = Integer.parseInt(String.valueOf(stringBuilder));
//        }
//
//        return num;
        /**
         * 优化版
         */
        if (str == null || str.isEmpty()){
            return -1;
        }
        int flag = 0;
        char[] chars = str.toCharArray();
        if (str.charAt(0) == '+'){
            flag = 1;
            chars[0] = 0;
        }else if (str.charAt(0) == '-'){
            flag = -1;
            chars[0] = 0;
        }
        int sum = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] < '0' || chars[i] > '9'){
                sum = 0;
                break;
            }
            sum = sum * 10 + chars[i] - '0';
        }
        return sum;
    }
}